问题标签 [php-builtin-server]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 网络服务器缓存问题
当我试图改善我拥有的画廊中缩略图的加载时间时,一切都开始了。所有图像的路径都来自 JSON 文件/字符串/响应以及有关它们的一些详细信息,以构建 UI。
我的第一个想法是用 JavaScript 本身缓存它们:
使用 BabelJS 的 ES2015
我知道这不是最好的方法,因为我应该按需加载它们(即在 JSON 中访问它们的偏移量时),甚至与 AJAX 异步加载。事实上,我也尝试了两种方法,但我没有设法让其他数据在填充 UI 之前等待图像完全加载。
不过这是以后的事了^_^
因此,我检查了 Chrome Inspector 并在Network选项卡下按预期加载了所有 JPG,但是当实际使用图像时,修改src
为预览设计的容器的属性(见下文),每个图像都被再次加载。
这只是一个片段。'current' 是通过 JSON 导航的画廊计数器
在用尽我的测试技能后,我最终相信问题出在我的服务器上。
我目前正在使用 PHP Internal Webserver 进行开发,因为至少到目前为止,我不需要完整的服务器解决方案。打开几个命令行窗口很糟糕,但无论如何......
为了记录,网络服务器是这样启动的:
Windows环境下运行>.<
我以前的路由文件很生硬,false
如果请求图像,js,css,字体就返回......所以,在阅读了这里的几个主题之后,我改变了它,试图包含一些缓存:
性能要好得多,但是,直接用一个文件进行测试,第一次加载大约需要 300 毫秒,第二次大约需要 5 毫秒,第三次大约需要 300 毫秒,第四次大约需要 5 毫秒,依此类推。oO
然后我在整个应用程序中对其进行了测试,缓存问题仍然存在,尽管理论上,图像已经用 JavaScript 加载并存储在图像对象中,当它们在 JSON 中的相应偏移量通过导航访问时再次加载。
此外,当多次刷新页面时,我没有与直接访问相同的“跳跃”响应时间。所有不是来自 CDN(jQuery、Bootstrap...)的东西都被一次又一次地加载。>:(
经过更多研究,我发现的两个罪魁祸首是Cache-control
未设置和整体状态代码。
我找不到304 Header
使用 PHP Internal WebServer 发送的方法,不是因为我不知道怎么做,毕竟代码是一样的,而是因为我看到的所有实现都依赖于一些$_SERVER
条目,就我而言知道,是由 Apache(可能还有其他专用服务器应用程序)提供的。
此外,由于某种原因,在 Chrome Inspector 中,打开资源的Headers部分,我看不到Response HeadersCache-control
下的指令,即使我确实设置了它,如您所见,到期时间约为 30 天。
除了如何解决这些问题之外,我还想了解为什么会发生这种情况。
cloud-foundry - 将简单的 PHP 网站部署到 Swisscom Application Cloud:如何配置服务器?
我正在尝试基于云铸造将一个简单的 PHP 网站部署到Swisscom Application Cloud 。
我的网站在本地运行良好,由 Apache 提供服务。
我已按照教程进行操作,但在某些方面我不清楚。
在教程中,检查应用程序是否正常工作的方法是在 php 中通过php -S
. 这对我不起作用,因为我的网站具有文件html
扩展名,php
并且内置服务器无法正确解释这些扩展名。在 Apache 中,我可以在httpd.conf
文件中进行配置,但在这里我不知道如何配置这样的行为。
这对我来说很好,因为我仍然可以通过 Apache 检查本地服务的网站。问题是它看起来在云中这也是运行应用程序的方式,尽管我在文档中找不到更多信息。
令我感到惊讶的是,这就是应用程序在生产中运行的方式,因为php 文档说明了有关内置服务器的以下内容:
“它不打算成为一个功能齐全的网络服务器。它不应该在公共网络上使用。”
Web 应用程序是否在 Swisscom 应用程序云中的 Apache 上运行?如果是,我如何获得配置httpd.conf
和php.ini
文件的访问权限?如果不是,我该如何配置我的应用所需的特殊行为?
更新:
这是一个示例 php 应用程序,它总结了我想要实现的目标:将其部署在 cloud Foundry 中,将 html 文件解释为 php 文件。
https://github.com/atineoSE/sample-php-app-cloudfoundry
在@daniel-mikusa 的文档链接之后,我添加了与.mime 类型相关的特殊配置.bp-config/httpd/extra/httpd-mime.conf
。但是,这并没有按预期工作。从 firefox 访问时,系统会提示我下载文件。当我通过 Apache 在httpd.conf
文件中使用相同的指令在本地提供它时,它工作正常。
php - 我无法访问在 VM 上运行的 php 内置服务器
我有一个太基本的 php 应用程序,我想通过内置的 php 服务器运行它,它存在于我的 Windows 机器的 VM 中:
我的项目结构
当我从我的虚拟机中运行 curl 时,它显然可以工作:
问题是当我尝试从我的浏览器(Windows 机器)连接到该服务器时,我得到
虽然这不适用于我的 php 内置服务器,但它非常适用于使用nodejs开发的另外两个项目,这些项目与php位于同一 VM 上。
为什么我无法访问 php 内置服务器,尤其是可以访问nodejs内置服务器?
php - 无法正确配置 apache
我遇到了一些问题,我正在使用这个oauth 库,起初我认为它有一个错误,因为我可以正确获取我的令牌,但是在使用令牌时我得到一个 401 错误,经过一些实验后我发现它与apache有关。如果我从命令行启动 php 服务器,它确实可以正常工作,所以现在我不知道 apache 可以做什么来使脚本出现故障。
我在 Windows 机器上安装了 XAMPP。(Apache/2.4.27 (Win32) OpenSSL/1.0.2l PHP/7.1.9)
我在apache中配置了虚拟主机,就像这样。
我的 etc 主机文件添加了该行127.0.0.1 TestSite
使用该配置,我可以向http://testsite/oauth/token发出请求并获取我的访问令牌,所以这里一切正常。
但是当我访问http://testsite/books时,我得到一个带有 401 未经授权标题的空白页。
另一方面,如果我去我的文件夹slim3-simple-rest-skeleton-master
并运行它php -S 0.0.0.0:8888 -t public/
我可以像以前一样在http://localhost:8888/oauth/token获取我的令牌,当我访问http://localhost:8888/books时,它可以正常工作。
我一直试图弄清楚有什么不同,但我没有运气,我在两种情况下都打印了一个 phpinfo 并且无法发现任何显着差异,知道我可以寻找什么吗?
我可以尝试记录什么以查看发生的不同情况?
symfony - symfony中的url问题
我不确定这个 bug 来自哪里,但现在如果我尝试使用这个 url 在浏览器中加载我的项目,“ http://localhost:8000 ”就会出现一个空白页面。我试图在 app.php 的第一行和 app_dev.php 中放置一个 die("message") ,但没有任何反应。就像没有加载这些文件一样。
如果我使用http://localhost:8000/app.php或http://localhost:8000/app_dev.php它工作得很好,并显示了应该显示的内容。
我想知道为什么现在会发生这种情况。我不确定如何解决这个问题。我最近从 3.3 更新到 3.4,但不确定这是否有影响。
任何人都可以帮助我吗?
php - 将整个 URL 传递给 PHP 内置服务器中的 $_GET 变量
我正在运行一个 PHP 内置服务器
我想将整个 URI 字符串传递给 $_GET 数组中名为“url”的字段。当我输入时http://localhost/thisIsAURLString
,我想var_dump($_GET);
返回array(1) { ["url"]=> string(16) "thisIsAURLString" }
有没有办法用 PHP 内置服务器做到这一点?
Web 应用程序通常在带有 nginx 的生产环境中运行,并带有如下所示的配置文件。此配置将 URL 传递给 $_GET 变量中的字段“url”,但我想对 PHP 内置服务器执行类似的操作。
编辑(一些上下文):
背景是我是一个有很多学生的助教。有问题的 Web 应用程序目前在带有 nginx 的生产环境中并且运行顺利,但是我所有的大约 100 名学生都需要在他们自己的计算机上本地下载和部署相同的 Web 应用程序。我无法更改 PHP 代码。部署应该尽可能简单和顺利,如果他们可以使用一些易于重现的 php 命令来做到这一点,那将是理想的。
php - 如何使用带有 Windows 身份验证 (NTLM) 的 PHP 内置服务器来填写 $_SERVER["LOGON_USER"]?
我有使用$_SERVER["LOGON_USER"]
通过 IIS 身份验证设置在我的服务器上获得的脚本。我希望这个变量domain\username
在本地运行时包含我的变量,或者至少在我启动本地主机上的 PHP 内置服务器时有一种方法来设置它。
如何在我的机器上配置 PHP 以像通过 IIS 运行时一样获取和填充这个变量?
PS:我看过这个问题,但答案地址$_ENV
,没有$_SERVER
。
php - 在 Symfony 的生产模式下使用 PHP 的内置 Web 服务器
我刚刚创建了一个新的 Symfony 3.4 应用程序。根据 Symfony 的文档,我可以通过运行使用 PHP 的内置网络服务器为我的应用程序提供服务
但是 - 这似乎在开发模式下运行应用程序。这意味着异常打印已打开,开发人员工具栏显示等。
有没有办法在 Symfony 的生产模式下使用内置的 Web 服务器?这不是为了向公众提供应用程序(这不是一个好主意),而是因为我想测试一个可能只会在生产模式下出现的问题。